package jdbc04;

import org.junit.Test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Properties;
/**
 * Properties使用:我们主要使用它与IO流结合的特性
 *   void load(InputStream inStream)
 *           从输入流中读取属性列表（键和元素对）。
 *  void load(Reader reader)
 *           按简单的面向行的格式从输入字符流中读取属性列表（键和元素对）
 *  我们一般用properties格式的文件专门存储键值对
 */
public class propertiesDemo {
    @Test
    public void test01(){
        Properties properties = new Properties();
        properties.put("1", "张三");
        properties.put("2", "李四");
        System.out.println(properties.get("2"));
        System.out.println(properties);
    }

    @Test
    public void test02(){
        Properties properties = new Properties();
        properties.put("1","张三");
        properties.put("2", "李四");
        System.out.println(properties.getProperty("1"));
    }

    @Test
    public void test03() throws Exception {
        //创建一个Properties对象
        Properties properties = new Properties();
        //加载src/db.properties文件
        properties.load(new FileInputStream("src/db.properties"));//在单元测试中IO流文件的相对路径相对的是当前模块
        //输出properties对象
        System.out.println(properties);
    }

    /**
     * 测试方法：用于加载并打印db.properties配置文件的内容
     * 该方法通过类加载器从类路径下读取db.properties文件，
     * 并将其内容加载到Properties对象中，最后打印到控制台
     *
     * @throws Exception 如果文件读取或加载过程中发生错误
     */
    @Test
    public void test04() throws Exception {
        Properties properties = new Properties();
        InputStream is = propertiesDemo.class.getClassLoader().getResourceAsStream("db.properties");//类加载器中的getResourceAsStream()方法默认从类的根路径读取文件
        properties.load(is);
        System.out.println(properties);
    }

}
